During the past years, the evolution of social networks and content delivery networks (CDN, which is used herein to cover both the content delivery and content distribution networks) was dramatic. More and more people prefer to either contact peers or friends via the social networks or to download content via CDN. Content types include web objects, downloadable objects (media files, software, documents), applications, real time media streams, and other components of internet delivery (DNS, routes, and database queries).
The progress of handheld devices, mostly mobile phones, made the process of downloading content from a CDN a common task for many users. However, as discussed next, there are limitations of the capacity of a CDN to intelligently allocate data files to a subset of caches.
A CDN is a system of computers that store copies of data, placed at various points in the network so as to maximize bandwidth for access to the data from clients throughout the network. A client accesses a copy of the data near to the client, as opposed to all clients accessing the same central server so as to avoid bottleneck near that server. However, the concept of a client accessing data “near” to the client is not very efficient as current implementations of CDN's seem to lack intelligent mechanisms to allocate data files to a subset of caches. One principle used by the existing CDNs is that data files can only be fetched from a cache in an edge node to which the client is directly attached. If the data file demanded by the client is not stored in that edge node, the CDN needs first to cache the desired data file there.
For a better understanding of the traditional CDN network, FIG. 1 shows a simplified example of a real world network 10 including plural nodes 12 and 14. The lowest row of circles represent edge nodes 14 while the remaining circles represent intermediary nodes 12. It is assumed that each end user computer (client) may be connected to only one edge node 14. Such a connection 16 is indicated by a dashed line from the client's computer or mobile device 18 to a corresponding edge node 14 in FIG. 1. It is further assumed that content or data files are cached only on edge nodes 14. In this particular example, the storage of one specific data file 20 in three caches 14a, 14b, and 14c is indicated by dashed lines 22. Note that the dashed lines 22 are not representing communication links.
The intermediate nodes 12 in the network 10 connect the total world of edge nodes 14 to each other. The lines among nodes 12 and 14 are real links between these nodes. In practice, all nodes 12 and 14 may be routers. Each link 24 between real nodes 12 and 14 is associated with a communication cost, indicated by the letter “c”. A communication path between two edge nodes 14 may take different ways in the network 10, as shown in FIG. 1.
Thus, when user 18 requests the data file 20 from the edge node 14d to which user 18 is connected to the edge node 14d needs to identify which other node has the data file and which node is the closest, assuming that node 14d does not have that data file. The existing CDN networks may take into consideration a static cost that is associated with links 24. However, any change in the conditions of the network are not reflected in the existing static cost as this cost does not change and thus, the existing CDN networks lack this information and fail to accurately describe a live network.
Thus, there is a need to find a method to localize the requested data to the “closest” cache on which a copy of the data file is stored. In this case, closest means the cache node with the least costly path to the edge node to which the client is connected. Another feature missing in the existing CDNs is an intelligent mechanism capable of deciding which data file to store on which edge nodes, given the limited amount of storage in the network and for optimizing the network resources.
Another problem with the existing CDNs is that although there are several active end-to-end probing methods (general techniques for characterizing the capabilities of a network link or a path) and new methods are continuously being developed and refined, the applications that benefit from such measurements often require more knowledge than just end-to-end estimates. Another problem is that there is no clear protocol on how to maintain and aggregate measurement data from several sources. For example, CDN implementations usually rely on some existing methods to infer the “best” source node for serving a content request. In order for the CDN to make intelligent content migration, based on network measurements, it needs a system that keeps coherent measurement statistics between all nodes.
Accordingly, it would be desirable to provide devices, systems and methods that avoid the afore-described problems and drawbacks.